package bean;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.event.RowEditEvent;

import to.Cliente;
import to.Veiculo;
import controller.cliente.CadastroCliente;
import controller.vinculo.ResgateVinculos;

@ManagedBean
public class ConsultaBean implements Serializable {  

	private static final long serialVersionUID = 1L;

    private List<Cliente> filteredClientes;  
    private List<Veiculo> filteredVeiculos;  
    
    private List<Cliente> clientes;
    
    private Cliente selectedCliente;  
  
    
    private CadastroCliente cadCli;
    
    private List<Veiculo> veiculos;
  
    public ConsultaBean() {  
    	cadCli = new CadastroCliente();
        clientes = cadCli.recuperaTodos();
    }  
  
    public Cliente getSelectedCliente() {  
        return selectedCliente;  
    }  
  
    public void setSelectedCliente(Cliente selectedCliente) {  
        this.selectedCliente = selectedCliente;  
    }  
  
  
    public List<Cliente> getFilteredClientes() {  
        return filteredClientes;  
    }  
  
    public void setFilteredClientes(List<Cliente> filteredClientes) {  
        this.filteredClientes = filteredClientes;  
    }  
  
    public List<Cliente> getClientes() {  
        return clientes;  
    }
    
    public void carregaVinculo(){
    	if(selectedCliente != null){
    		veiculos = new ResgateVinculos().resgataVeiculos(selectedCliente.getId());
    	}
    }
    
    public void onEdit(RowEditEvent event) {  
    	Cliente cliente = (Cliente) event.getObject();
    	cadCli.alteraCliente(cliente);
    	FacesMessage msg = new FacesMessage("Cliente foi editado", ""+((Cliente) event.getObject()).getCpf());  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }  
      
    public void onCancel(RowEditEvent event) {  
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN,
        		"Edicao cancelada", ""+((Cliente) event.getObject()).getCpf());  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }

	public List<Veiculo> getVeiculos() {
		carregaVinculo();
		return veiculos;
	}

	public void setVeiculos(List<Veiculo> veiculos) {
		this.veiculos = veiculos;
	}

	public List<Veiculo> getFilteredVeiculos() {
		return filteredVeiculos;
	}

	public void setFilteredVeiculos(List<Veiculo> filteredVeiculos) {
		this.filteredVeiculos = filteredVeiculos;
	}

}  
